package base;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 泛型类的使用
 * * 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型
 * * 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
 *
 * @author 王霄
 * @date 2021/10/11 12:50
 **/
public class GenericClassDemo {

    public static void main(String[] args) {
        A<Integer> b = new B<>();
        A<String> c = new C();
        b.setData(100);
        c.setData("你好");
        System.out.println(b);
        System.out.println(c);
    }


    @Data
    public static class A<T> {
        private T data;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class B<T> extends A<T> {
        private T data;
    }

    @Data
    @EqualsAndHashCode(callSuper = true)
    public static class C extends A<String> {
        private String data;
    }
}
